package com.ruoyi.campus.service;


import com.ruoyi.campus.domain.PatrolPoint;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 巡查点位信息Service接口
 * 
 * @author ruoyi
 * @date 2025-06-29
 */
public interface IPatrolPointService 
{
    /**
     * 查询巡查点位信息
     * 
     * @param pointId 巡查点位信息主键
     * @return 巡查点位信息
     */
    public PatrolPoint selectPatrolPointByPointId(Long pointId);

    /**
     * 根据点位唯一编码查询巡查点位信息
     * 
     * @param pointUniqueCode 点位唯一编码
     * @return 巡查点位信息
     */
    public PatrolPoint selectPatrolPointByUniqueCode(String pointUniqueCode);

    /**
     * 查询巡查点位信息列表
     * 
     * @param patrolPoint 巡查点位信息
     * @return 巡查点位信息集合
     */
    public List<PatrolPoint> selectPatrolPointList(PatrolPoint patrolPoint);

    /**
     * 新增巡查点位信息
     * 
     * @param patrolPoint 巡查点位信息
     * @param operName 操作用户
     * @return 结果
     */
    public int insertPatrolPoint(PatrolPoint patrolPoint, String operName);

    /**
     * 修改巡查点位信息
     * 
     * @param patrolPoint 巡查点位信息
     * @param operName 操作用户
     * @return 结果
     */
    public int updatePatrolPoint(PatrolPoint patrolPoint, String operName);

    /**
     * 批量删除巡查点位信息
     * 
     * @param pointIds 需要删除的巡查点位信息主键集合
     * @return 结果
     */
    public int deletePatrolPointByPointIds(String pointIds);

    /**
     * 删除巡查点位信息
     * 
     * @param pointId 巡查点位信息主键
     * @return 结果
     */
    public int deletePatrolPointByPointId(Long pointId);
    
    /**
     * 解绑巡查点位的安全员
     * 
     * @param pointId 巡查点位ID
     * @param updateBy 更新人
     * @return 结果
     */
    public int unbindGuardFromPoint(Long pointId, String updateBy);

    /**
     * 校验点位编码是否唯一
     *
     * @param pointUniqueCode 点位编码
     * @param pointId 点位ID
     * @return 结果
     */
    public boolean checkPointCodeUnique(String pointUniqueCode, Long pointId);
    
    /**
     * 根据二维码code查询点位信息
     *
     * @param qrCode 二维码code
     * @return 点位信息
     */
    public PatrolPoint selectPatrolPointByQrCode(String qrCode);

    /**
     * 批量导入点位信息
     *
     * @param patrolPointList 点位信息列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importPatrolPoint(List<PatrolPoint> patrolPointList, Boolean isUpdateSupport, String operName);

    /**
     * 获取点位二维码base64
     *
     * @param pointId 点位ID
     * @return 二维码base64
     */
    public String getQrCodeBase64(Long pointId);

    /**
     * 批量下载二维码
     *
     * @param patrolPoint 查询条件
     */
    public void batchDownloadQrCode(PatrolPoint patrolPoint, HttpServletResponse response);
}
